Памятка.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                        ОТДЕЛ Памятка;
(****************************************************************************** 
 * НАЗНАЧЕНИЕ: хранилище для ПолеПамятки
 ******************************************************************************)
ИСПОЛЬЗУЕТ 
  Надел,
  Цепь      ИЗ "..\Иное\",
  Набор     ИЗ "..\Иное\",
  Настройки ИЗ "..\Обмен\",
  Читать    ИЗ "..\Обмен\",
  Писать    ИЗ "..\Обмен\";
ПОСТ
  ВсегоСтрок = 30;
ВИД
  ДЦепь = ДОСТУП К ЦЕПЬ;

  Доступ-=ДОСТУП К Вид;
  Вид-=НАБОР(Набор.Вид)
    имя:ДЦепь;
    строк-:ЦЕЛ;
    строки-:РЯД ВсегоСтрок ИЗ ДЦепь;
  КОН;
ПЕР
  памятки:Набор.Список;

(******************************************************************************)
ЗАДАЧА ДобавитьСтроку-(памятка:Доступ; цепь-:ЦЕПЬ);
ПЕР
  строка:ЦЕЛ;
  дцепь:ДЦепь;
УКАЗ
  ЕСЛИ цепь = "" ТО
    ВОЗВРАТ
  КОН;
  строка:=0;
  КОЛЬЦО
    ЕСЛИ строка >= памятка.строк ТО
      (* создаём наверху новую строку *)
      ЕСЛИ строка >= ВсегоСтрок ТО
        УМЕНЬШИТЬ(строка)
      КОН;
      памятка.строк:=строка+1;
      СОЗДАТЬ(дцепь,цепь);
      ВЫХОД
    КОН;
    ЕСЛИ Цепь.Сравнить(памятка.строки[строка]^,цепь) = 0 ТО
      (* переносим строку наверх *)
      дцепь:=памятка.строки[строка];
      ВЫХОД
    КОН;
    УВЕЛИЧИТЬ(строка)
  КОН;
  ПОКА строка > 0 ВЫП
    памятка.строки[строка]:=памятка.строки[строка-1];
    УМЕНЬШИТЬ(строка)
  КОН;
  памятка.строки[0]:=дцепь
КОН ДобавитьСтроку;

(******************************************************************************)
ЗАДАЧА ПохожаяСтрока-(памятка:Доступ; цепь-:ЦЕПЬ):ЦЕЛ;
ПЕР
  строка:ЦЕЛ;
УКАЗ
  ОТ строка:=0 ДО памятка.строк-1 ВЫП
    ЕСЛИ Цепь.ПохожееНачало(цепь,памятка.строки[строка]^) ТО
      ВОЗВРАТ строка
    КОН
  КОН;
  ВОЗВРАТ -1
КОН ПохожаяСтрока;

(******************************************************************************)
ЗАДАЧА Найти-(имя-:ЦЕПЬ):Доступ;
(* Поиск памятки *)
ПЕР
  памятка:Доступ;
  звено:Набор.Звено;
УКАЗ
  звено:=Набор.ПервоеЗвено(памятки);
  ПОКА звено # ПУСТО ВЫП
    памятка:=звено.данные(Доступ);
    ЕСЛИ памятка.имя^ = имя ТО
      ВОЗВРАТ памятка
    КОН;
    звено:=звено.след
  КОН;
  СОЗДАТЬ(памятка);
  СОЗДАТЬ(памятка.имя,имя);
  Набор.ВКонецСписка(памятки,памятка);
  ВОЗВРАТ памятка
КОН Найти;

(******************************************************************************)
(* ******* чтение и запись в поток ******* *)
(******************************************************************************)
ЗАДАЧА ПисатьПамятку(поток:Писать.Поток; памятка:Доступ);
ПЕР
  строка:ЦЕЛ;
УКАЗ
  Настройки.ПисатьСтроку(поток,"памятка",памятка.имя^);
  Настройки.ПисатьЦел(поток,"строк",памятка.строк);
  ОТ строка:=0 ДО памятка.строк-1 ВЫП
    Настройки.ПисатьСтроку(поток,"",памятка.строки[строка]^)
  КОН
КОН ПисатьПамятку;

(******************************************************************************)
ЗАДАЧА ЧитатьПамятку(поток:Читать.Поток):Доступ;
ПЕР
  памятка:Доступ;
  строка:ЦЕЛ;
  имя:ЦЕПЬ[200];
УКАЗ
  СОЗДАТЬ(памятка);
  Настройки.ЧитатьСтроку(поток,имя);
  СОЗДАТЬ(памятка.имя,имя);
  памятка.строк:=Настройки.ЧитатьЦел(поток);
  ОТ строка:=0 ДО памятка.строк-1 ВЫП
    Настройки.ЧитатьСтроку(поток,имя);
    СОЗДАТЬ(памятка.строки[строка],имя)
  КОН;
  ВОЗВРАТ памятка
КОН ЧитатьПамятку;

(******************************************************************************)
ЗАДАЧА ЧитатьНастройки-(поток:Читать.Поток);
ПЕР
  памятка,памяток:ЦЕЛ;
УКАЗ
  Набор.ОчиститьСписок(памятки);
  памяток:=Настройки.ЧитатьЦел(поток);
  ОТ памятка:=0 ДО памяток-1 ВЫП
    Набор.ВКонецСписка(памятки,ЧитатьПамятку(поток))
  КОН
КОН ЧитатьНастройки;

(******************************************************************************)
ЗАДАЧА ПисатьНастройки-(поток:Писать.Поток);
ПЕР
  звено:Набор.Звено;
УКАЗ
  Настройки.ПисатьЦел(поток,"памяток",памятки.звеньев);
  звено:=Набор.ПервоеЗвено(памятки);
  ПОКА звено # ПУСТО ВЫП
    ПисатьПамятку(поток,звено.данные(Доступ));
    звено:=звено.след
  КОН
КОН ПисатьНастройки;

(******************************************************************************)
УКАЗ
  Набор.ОчиститьСписок(памятки)
КОН Памятка.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы